home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / tchk21.arc / INCLUDE.ARC / IBM.H < prev    next >
C/C++ Source or Header  |  1989-06-20  |  6KB  |  135 lines

  1. /* TCHK 2.1 - Howard Kapustein's Turbo C library        6-6-89      */
  2. /* Copyright (C) 1988,1989 Howard Kapustein.  All rights reserved.  */
  3.  
  4. /* ibm.h  -  header file for IBM.C - IBM specific functions */
  5.  
  6. #ifndef IBM_HEADER
  7. #define IBM_HEADER  1
  8.  
  9. #include <howard.h>
  10.  
  11. /* ROM id */
  12. #define PC              0xFF
  13. #define XT              0xFE
  14. #define Portable_PC     0xFE
  15. #define PCjr            0xFD
  16. #define AT              0xFC
  17. #define AT3x9           0xFC
  18. #define XT286           0xFC
  19. #define PS2_Model_50    0xFC
  20. #define PS2_Model_60    0xFC
  21. #define XT2             0xFB
  22. #define PS2_Model_25    0xFA
  23. #define PS2_Model_30    0xFA
  24. #define PC_Convertible  0xF9
  25. #define PS2_Model_80    0xF8
  26. #define Compaq          0x2D
  27. #define Compaq_Plus     0x9A
  28.  
  29. /* machine_id codes */
  30. #define PC_id               1
  31. #define XT_id               2
  32. #define Portable_PC_id      3          /* can't currently be identified */
  33. #define PCjr_id             4
  34. #define AT_id               5
  35. #define AT3x9_id            6
  36. #define XT2_id              7
  37. #define XT286_id            8
  38. #define PC_Convertible_id   9
  39. #define PS2_Model_25_id     10         /* ?, see docs */
  40. #define PS2_Model_30_id     11
  41. #define PS2_Model_50_id     12
  42. #define PS2_Model_60_id     13
  43. #define PS2_Model_80_id     14
  44. #define Unknown_id          99
  45.  
  46. /* Memory allocation strategies */
  47. #define MEM_STRAT_FIRST 0         /* use first mem block large enough */
  48. #define MEM_STRAT_BEST  1         /* use smallest mem block large enough */
  49. #define MEM_STRAT_LAST  2         /* use high part of last usable mem block */
  50. #define MEM_STRAT_BADDOS -1       /* using DOS earlier than 3.xx */
  51.  
  52. /* Disk id */
  53. #define DISK_DSDD_8     0xFF      /* Double-sided, 5 1/4" floppy, 8 sectors */
  54. #define DISK_SSDD_8     0xFE      /* Single-sided, 5 1/4" floppy, 8 sectors */
  55. #define DISK_SS8_8      0xFE      /* Single-sided, 8" floppy, 8 sectors */
  56. #define DISK_DSDD_9     0xFD      /* Double-sided, 5 1/4" floppy, 9 sectors */
  57. #define DISK_SSDD_9     0xFC      /* Single-sided floppy, 9 sectors */
  58. #define DISK_DSQD_15    0xF9      /* Double-sided, 5 1/4" floppy, 15 sectors */
  59. #define DISK_DS3_15     0xF9      /* Double-sided, 3 1/2" floppy, 9 sectors */
  60. #define DISK_HARD       0xF8      /* Hard disk */
  61. #define DISK_DS3_18     0xF0      /* Double-sided, 3 1/2" floppy, 18 sectors */
  62. #define DISK_UNDEFINED  0xF0      /* undefined media type */
  63. /* Note: if the disk is Single-sided, 8" 26 sectors,
  64.          it could have the id FE or FD                  */
  65. #define DISK_INVALID    0x1       /* invalid disk specified */
  66.  
  67. /* EMS return (error?) codes */
  68. #define EMS_SUCCESS         0x00        /* success */
  69. #define EMS_ERROR_SOFTWARE  0x80        /* error in EMM software */
  70. #define EMS_ERROR_HARDWARE  0x81        /* malfunction in EM hardware */
  71. #define EMS_ERROR_UNDEFINED 0x84        /* function requested not defined */
  72.  
  73. typedef struct EMSrecord {
  74.             unsigned int handle;
  75.             unsigned int totalpages;
  76.             unsigned int availpages;
  77.             byte version;
  78.             byte emserror;
  79.         };
  80.  
  81. #define TIMER_TICKS *((long far *) 0x46Clu)  /* Timer tick count */
  82. #define isBREAKon()     (getcbrk()==1?TRUE:FALSE)
  83. #define setBREAK(b)     setcbrk(b)
  84. #define isVERIFYon()    (getverify()==1?TRUE:FALSE)
  85. #define setVERIFY(v)    setverify(b)
  86.  
  87. /* Identification prototypes */
  88. int is2nd8259(void);                    /* is second 8259 chip installed */
  89. boolean isBlogical(void);               /* is B: physical or logical */
  90. boolean isExtended(void);               /* is Extended memory available */
  91. boolean iskey102(void);                 /* is keyboard 101/102 keys */
  92. int isMCA(void);                        /* is bus Micro Channel Architecture */
  93. int isrealtimeclock(void);              /* is real-time clock installed */
  94. int machine_id(void);                   /* determine machine id */
  95. byte ROM_id(void);                      /* get ROM id */
  96. char *ROM_date(void);                   /* get ROM date */
  97.  
  98. /* Compaq 386 prototypes */
  99. unsigned char Compaq386GetCpuSpeed(unsigned int *speedvalue);               /* Compaq 386: Get cpu speed */
  100. void Compaq386SetCpuSpeed(unsigned char speed, unsigned int speedvalue);    /* Compaq 386: Set cpu speed */
  101. unsigned char Compaq386KbdType(void);                                       /* Compaq 386: Determine attached keyboard type */
  102.  
  103. /* Pointing Device BIOS Interface prototypes */
  104. int SetPointDevice(boolean enable);     /* Pointing Device BIOS Interface: Enable/Disable (DV 2.x, PS/2) */
  105. int ResetPointDevice(void);             /* Pointing Device BIOS Interface: Reset (DV 2.x, PS/2) */
  106. int SetRatePointDevice(unsigned char samplerate);   /* Pointing Device BIOS Interface: Set Sampling Rate (DV 2.x, PS/2) */
  107. int SetResPointDevice(unsigned char countpermm);    /* Pointing Device BIOS Interface: Set Resolution (DV 2.x, PS/2) */
  108. int GetTypePointDevice(void);           /* Pointing Device BIOS Interface: Get Type (DV 2.x, PS/2) */
  109.  
  110. /* Disk prototypes */
  111. boolean diskchanged(int drive);         /* disk change detected: AT, XT2, XT286, Convertible and PS/2 only */
  112. byte disktype(byte drive);              /* type of disk (0=default, A=1, etc.) */
  113.  
  114. /* Joystick prototypes */
  115. boolean isgameport(void);               /* is game port available */
  116. char joysticksettings(void);            /* get joystick switch settings */
  117. unsigned joystickAx(void);              /* read joystick input Ax */
  118. unsigned joystickAy(void);              /* read joystick input Ay */
  119. unsigned joystickBx(void);              /* read joystick input Bx */
  120. unsigned joystickBy(void);              /* read joystick input By */
  121.  
  122. /* EMS prototypes */
  123. boolean isEMSavail(void);               /* is EMS available */
  124. unsigned char EMSGetStatus(void);       /* get EMS status */
  125. boolean EMMversion(byte *version);      /* version or (on failure) error code */
  126. boolean EMSpages(struct EMSrecord *ems);    /* total/available amount of EMS */
  127. boolean EMSinfo(struct EMSrecord *ems);     /* EMS version and total/available pages */
  128. int EMSwarmbootprep(void);                  /* Prep EMS hardware for warm boot: LIM EMS 4.0 */
  129.  
  130. /* Miscellaneous prototypes */
  131. int Extendedtotal(void);                /* total amount of Extended memory (in K) */
  132. void reboot(boolean warmboot);          /* reboot, warmboot vs. coldboot */
  133.  
  134. #endif              /* IBM_HEADER */
  135.